﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

//importamos
using EventSys.BussinesEntities;

namespace EventSys.Repository
{
    public class AuspiciadorRepository : MasterRepository, IAuspiciadorRepository
    {
        public List<Auspiciador> GetFromAllAuspiciadorByCriterio(string criterio)
        {
            var query = Context.Auspiciadors.ToList();


            if (criterio != "")
            {
                query = (query.Where(a=> a.RazonSocial.ToUpper().Contains(criterio.ToUpper()) || 
                                                         a.RucDni.ToUpper().Contains(criterio.ToUpper()) || 
                                                         a.Representante.ToUpper().Contains(criterio.ToUpper())
                                            )
                             ).ToList();
            }

            return query;
        }

        public void RegistrarAuspiciador(Auspiciador auspiciador)
        {
            var existe = Context.Auspiciadors.Where(a => a.RazonSocial.Equals(auspiciador.RazonSocial)).SingleOrDefault();

            if (existe == null)
            {
                Context.Auspiciadors.Add(auspiciador);
                Context.SaveChanges();
                throw new Exception("AUSPICIADOR REGISTRADO CORRECTAMENTE (*_*)");
            }
            else
            {
                throw new Exception("El AUSPICIADOR YA ESTA REGISTRADO (-_-)");
            }

        }


        public Auspiciador AuspiciadorById(int id)
        {
            var auspiciador = Context.Auspiciadors.Find(id);
            return auspiciador;
        }


        public void EditarAuspiciador(Auspiciador auspiciador)
        {

            Context.Entry<Auspiciador>(auspiciador).State = System.Data.EntityState.Modified;
            Context.SaveChanges();
            throw new Exception("AUSPICIADOR MODIFICADIO EXITOSAMENTE (+_+)");
        }


        public void EliminarAuspiciador(int id)
        {
            var existe = Context.Auspiciadors.Find(id);

            if (existe != null)
            {
                Context.Auspiciadors.Remove(existe);
                Context.SaveChanges();
            }
        }


        public List<Auspiciador> GetFromAllAuspiciadores()
        {
            var query = Context.Auspiciadors.ToList();
            
            return query;
        }


        public List<Auspiciador> GetFromAllAuspiciadorByCriterioAndTipoAuspiciador(string criterio, string tipo)
        {
            var query = Context.Auspiciadors.Where(a => a.TipoAuspiciador.Equals(tipo));

            if (!string.IsNullOrEmpty(criterio))
            {
                query = from a in query
                        where a.RazonSocial.ToUpper().Contains(criterio.ToUpper()) ||
                              a.RucDni.ToUpper().Contains(criterio.ToUpper()) ||
                              a.Representante.ToUpper().Contains(criterio.ToUpper())
                        select a;               
            }

            return query.ToList();

            //var query = context.Articuloes.ToList();

            //if (criterio != "" && criterio != null && criterio != string.Empty || estado != null)
            //{
            //    query = (query.Where(a => a.Descripcion.ToUpper().Contains(criterio.ToUpper()) && a.Estado == estado)).ToList();
            //}

            //return query;

        }
    }
}
